(0) Obligation:

Runtime Complexity TRS:
The TRS R consists of the following rules:

f(x, f(s(s(y)), f(z, w))) → f(s(x), f(y, f(s(z), w)))
L(f(s(s(y)), f(z, w))) → L(f(s(0), f(y, f(s(z), w))))
f(x, f(s(s(y)), nil)) → f(s(x), f(y, f(s(0), nil)))

Rewrite Strategy: INNERMOST

(1) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID) transformation)

Converted CpxTRS to CDT

(2) Obligation:

Complexity Dependency Tuples Problem
Rules:

f(z0, f(s(s(z1)), f(z2, z3))) → f(s(z0), f(z1, f(s(z2), z3)))
f(z0, f(s(s(z1)), nil)) → f(s(z0), f(z1, f(s(0), nil)))
L(f(s(s(z0)), f(z1, z2))) → L(f(s(0), f(z0, f(s(z1), z2))))
Tuples:

F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(z0, f(s(s(z1)), nil)) → c1(F(s(z0), f(z1, f(s(0), nil))), F(z1, f(s(0), nil)), F(s(0), nil))
L'(f(s(s(z0)), f(z1, z2))) → c2(L'(f(s(0), f(z0, f(s(z1), z2)))), F(s(0), f(z0, f(s(z1), z2))), F(z0, f(s(z1), z2)), F(s(z1), z2))
S tuples:

F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(z0, f(s(s(z1)), nil)) → c1(F(s(z0), f(z1, f(s(0), nil))), F(z1, f(s(0), nil)), F(s(0), nil))
L'(f(s(s(z0)), f(z1, z2))) → c2(L'(f(s(0), f(z0, f(s(z1), z2)))), F(s(0), f(z0, f(s(z1), z2))), F(z0, f(s(z1), z2)), F(s(z1), z2))
K tuples:none
Defined Rule Symbols:

f, L

Defined Pair Symbols:

F, L'

Compound Symbols:

c, c1, c2

(3) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace F(z0, f(s(s(z1)), nil)) → c1(F(s(z0), f(z1, f(s(0), nil))), F(z1, f(s(0), nil)), F(s(0), nil)) by

F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))

(4) Obligation:

Complexity Dependency Tuples Problem
Rules:

f(z0, f(s(s(z1)), f(z2, z3))) → f(s(z0), f(z1, f(s(z2), z3)))
f(z0, f(s(s(z1)), nil)) → f(s(z0), f(z1, f(s(0), nil)))
L(f(s(s(z0)), f(z1, z2))) → L(f(s(0), f(z0, f(s(z1), z2))))
Tuples:

F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
L'(f(s(s(z0)), f(z1, z2))) → c2(L'(f(s(0), f(z0, f(s(z1), z2)))), F(s(0), f(z0, f(s(z1), z2))), F(z0, f(s(z1), z2)), F(s(z1), z2))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
S tuples:

F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
L'(f(s(s(z0)), f(z1, z2))) → c2(L'(f(s(0), f(z0, f(s(z1), z2)))), F(s(0), f(z0, f(s(z1), z2))), F(z0, f(s(z1), z2)), F(s(z1), z2))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
K tuples:none
Defined Rule Symbols:

f, L

Defined Pair Symbols:

F, L'

Compound Symbols:

c, c2, c1

(5) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace L'(f(s(s(z0)), f(z1, z2))) → c2(L'(f(s(0), f(z0, f(s(z1), z2)))), F(s(0), f(z0, f(s(z1), z2))), F(z0, f(s(z1), z2)), F(s(z1), z2)) by

L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(z0)), f(s(z1), f(z2, z3)))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(z2), z3))))), F(s(0), f(z0, f(s(s(z1)), f(z2, z3)))), F(z0, f(s(s(z1)), f(z2, z3))), F(s(s(z1)), f(z2, z3)))
L'(f(s(s(z0)), f(s(z1), nil))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(0), nil))))), F(s(0), f(z0, f(s(s(z1)), nil))), F(z0, f(s(s(z1)), nil)), F(s(s(z1)), nil))
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))

(6) Obligation:

Complexity Dependency Tuples Problem
Rules:

f(z0, f(s(s(z1)), f(z2, z3))) → f(s(z0), f(z1, f(s(z2), z3)))
f(z0, f(s(s(z1)), nil)) → f(s(z0), f(z1, f(s(0), nil)))
L(f(s(s(z0)), f(z1, z2))) → L(f(s(0), f(z0, f(s(z1), z2))))
Tuples:

F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(z0)), f(s(z1), f(z2, z3)))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(z2), z3))))), F(s(0), f(z0, f(s(s(z1)), f(z2, z3)))), F(z0, f(s(s(z1)), f(z2, z3))), F(s(s(z1)), f(z2, z3)))
L'(f(s(s(z0)), f(s(z1), nil))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(0), nil))))), F(s(0), f(z0, f(s(s(z1)), nil))), F(z0, f(s(s(z1)), nil)), F(s(s(z1)), nil))
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
S tuples:

F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(z0)), f(s(z1), f(z2, z3)))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(z2), z3))))), F(s(0), f(z0, f(s(s(z1)), f(z2, z3)))), F(z0, f(s(s(z1)), f(z2, z3))), F(s(s(z1)), f(z2, z3)))
L'(f(s(s(z0)), f(s(z1), nil))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(0), nil))))), F(s(0), f(z0, f(s(s(z1)), nil))), F(z0, f(s(s(z1)), nil)), F(s(s(z1)), nil))
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
K tuples:none
Defined Rule Symbols:

f, L

Defined Pair Symbols:

F, L'

Compound Symbols:

c, c1, c2, c2

(7) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
We considered the (Usable) Rules:

f(z0, f(s(s(z1)), nil)) → f(s(z0), f(z1, f(s(0), nil)))
f(z0, f(s(s(z1)), f(z2, z3))) → f(s(z0), f(z1, f(s(z2), z3)))
And the Tuples:

F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(z0)), f(s(z1), f(z2, z3)))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(z2), z3))))), F(s(0), f(z0, f(s(s(z1)), f(z2, z3)))), F(z0, f(s(s(z1)), f(z2, z3))), F(s(s(z1)), f(z2, z3)))
L'(f(s(s(z0)), f(s(z1), nil))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(0), nil))))), F(s(0), f(z0, f(s(s(z1)), nil))), F(z0, f(s(s(z1)), nil)), F(s(s(z1)), nil))
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(0) = [3]   
POL(F(x1, x2)) = 0   
POL(L'(x1)) = [1]   
POL(c(x1, x2, x3)) = x1 + x2 + x3   
POL(c1(x1)) = x1   
POL(c2(x1)) = x1   
POL(c2(x1, x2, x3, x4)) = x1 + x2 + x3 + x4   
POL(f(x1, x2)) = [2]   
POL(nil) = [4]   
POL(s(x1)) = 0   

(8) Obligation:

Complexity Dependency Tuples Problem
Rules:

f(z0, f(s(s(z1)), f(z2, z3))) → f(s(z0), f(z1, f(s(z2), z3)))
f(z0, f(s(s(z1)), nil)) → f(s(z0), f(z1, f(s(0), nil)))
L(f(s(s(z0)), f(z1, z2))) → L(f(s(0), f(z0, f(s(z1), z2))))
Tuples:

F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(z0)), f(s(z1), f(z2, z3)))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(z2), z3))))), F(s(0), f(z0, f(s(s(z1)), f(z2, z3)))), F(z0, f(s(s(z1)), f(z2, z3))), F(s(s(z1)), f(z2, z3)))
L'(f(s(s(z0)), f(s(z1), nil))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(0), nil))))), F(s(0), f(z0, f(s(s(z1)), nil))), F(z0, f(s(s(z1)), nil)), F(s(s(z1)), nil))
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
S tuples:

F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(z0)), f(s(z1), f(z2, z3)))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(z2), z3))))), F(s(0), f(z0, f(s(s(z1)), f(z2, z3)))), F(z0, f(s(s(z1)), f(z2, z3))), F(s(s(z1)), f(z2, z3)))
L'(f(s(s(z0)), f(s(z1), nil))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(0), nil))))), F(s(0), f(z0, f(s(s(z1)), nil))), F(z0, f(s(s(z1)), nil)), F(s(s(z1)), nil))
K tuples:

L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
Defined Rule Symbols:

f, L

Defined Pair Symbols:

F, L'

Compound Symbols:

c, c1, c2, c2

(9) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace L'(f(s(s(z0)), f(s(z1), f(z2, z3)))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(z2), z3))))), F(s(0), f(z0, f(s(s(z1)), f(z2, z3)))), F(z0, f(s(s(z1)), f(z2, z3))), F(s(s(z1)), f(z2, z3))) by

L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))

(10) Obligation:

Complexity Dependency Tuples Problem
Rules:

f(z0, f(s(s(z1)), f(z2, z3))) → f(s(z0), f(z1, f(s(z2), z3)))
f(z0, f(s(s(z1)), nil)) → f(s(z0), f(z1, f(s(0), nil)))
L(f(s(s(z0)), f(z1, z2))) → L(f(s(0), f(z0, f(s(z1), z2))))
Tuples:

F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(z0)), f(s(z1), nil))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(0), nil))))), F(s(0), f(z0, f(s(s(z1)), nil))), F(z0, f(s(s(z1)), nil)), F(s(s(z1)), nil))
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
S tuples:

F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(z0)), f(s(z1), nil))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(0), nil))))), F(s(0), f(z0, f(s(s(z1)), nil))), F(z0, f(s(s(z1)), nil)), F(s(s(z1)), nil))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
K tuples:

L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
Defined Rule Symbols:

f, L

Defined Pair Symbols:

F, L'

Compound Symbols:

c, c1, c2, c2, c2

(11) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
We considered the (Usable) Rules:

f(z0, f(s(s(z1)), nil)) → f(s(z0), f(z1, f(s(0), nil)))
f(z0, f(s(s(z1)), f(z2, z3))) → f(s(z0), f(z1, f(s(z2), z3)))
And the Tuples:

F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(z0)), f(s(z1), nil))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(0), nil))))), F(s(0), f(z0, f(s(s(z1)), nil))), F(z0, f(s(s(z1)), nil)), F(s(s(z1)), nil))
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(0) = [3]   
POL(F(x1, x2)) = 0   
POL(L'(x1)) = [1]   
POL(c(x1, x2, x3)) = x1 + x2 + x3   
POL(c1(x1)) = x1   
POL(c2(x1)) = x1   
POL(c2(x1, x2, x3)) = x1 + x2 + x3   
POL(c2(x1, x2, x3, x4)) = x1 + x2 + x3 + x4   
POL(f(x1, x2)) = [3]   
POL(nil) = [3]   
POL(s(x1)) = 0   

(12) Obligation:

Complexity Dependency Tuples Problem
Rules:

f(z0, f(s(s(z1)), f(z2, z3))) → f(s(z0), f(z1, f(s(z2), z3)))
f(z0, f(s(s(z1)), nil)) → f(s(z0), f(z1, f(s(0), nil)))
L(f(s(s(z0)), f(z1, z2))) → L(f(s(0), f(z0, f(s(z1), z2))))
Tuples:

F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(z0)), f(s(z1), nil))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(0), nil))))), F(s(0), f(z0, f(s(s(z1)), nil))), F(z0, f(s(s(z1)), nil)), F(s(s(z1)), nil))
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
S tuples:

F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(z0)), f(s(z1), nil))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(0), nil))))), F(s(0), f(z0, f(s(s(z1)), nil))), F(z0, f(s(s(z1)), nil)), F(s(s(z1)), nil))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
K tuples:

L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
Defined Rule Symbols:

f, L

Defined Pair Symbols:

F, L'

Compound Symbols:

c, c1, c2, c2, c2

(13) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace L'(f(s(s(z0)), f(s(z1), nil))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(0), nil))))), F(s(0), f(z0, f(s(s(z1)), nil))), F(z0, f(s(s(z1)), nil)), F(s(s(z1)), nil)) by

L'(f(s(s(s(z1))), f(s(z2), nil))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(0), nil))))), F(s(0), f(s(z1), f(s(s(z2)), nil))), F(s(z1), f(s(s(z2)), nil)), F(s(s(z2)), nil))
L'(f(s(s(x0)), f(s(x1), nil))) → c2(F(s(0), f(x0, f(s(s(x1)), nil))), F(x0, f(s(s(x1)), nil)))

(14) Obligation:

Complexity Dependency Tuples Problem
Rules:

f(z0, f(s(s(z1)), f(z2, z3))) → f(s(z0), f(z1, f(s(z2), z3)))
f(z0, f(s(s(z1)), nil)) → f(s(z0), f(z1, f(s(0), nil)))
L(f(s(s(z0)), f(z1, z2))) → L(f(s(0), f(z0, f(s(z1), z2))))
Tuples:

F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
L'(f(s(s(s(z1))), f(s(z2), nil))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(0), nil))))), F(s(0), f(s(z1), f(s(s(z2)), nil))), F(s(z1), f(s(s(z2)), nil)), F(s(s(z2)), nil))
L'(f(s(s(x0)), f(s(x1), nil))) → c2(F(s(0), f(x0, f(s(s(x1)), nil))), F(x0, f(s(s(x1)), nil)))
S tuples:

F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(s(z1))), f(s(z2), nil))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(0), nil))))), F(s(0), f(s(z1), f(s(s(z2)), nil))), F(s(z1), f(s(s(z2)), nil)), F(s(s(z2)), nil))
L'(f(s(s(x0)), f(s(x1), nil))) → c2(F(s(0), f(x0, f(s(s(x1)), nil))), F(x0, f(s(s(x1)), nil)))
K tuples:

L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
Defined Rule Symbols:

f, L

Defined Pair Symbols:

F, L'

Compound Symbols:

c, c1, c2, c2, c2, c2

(15) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

L'(f(s(s(x0)), f(s(x1), nil))) → c2(F(s(0), f(x0, f(s(s(x1)), nil))), F(x0, f(s(s(x1)), nil)))
We considered the (Usable) Rules:

f(z0, f(s(s(z1)), nil)) → f(s(z0), f(z1, f(s(0), nil)))
f(z0, f(s(s(z1)), f(z2, z3))) → f(s(z0), f(z1, f(s(z2), z3)))
And the Tuples:

F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
L'(f(s(s(s(z1))), f(s(z2), nil))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(0), nil))))), F(s(0), f(s(z1), f(s(s(z2)), nil))), F(s(z1), f(s(s(z2)), nil)), F(s(s(z2)), nil))
L'(f(s(s(x0)), f(s(x1), nil))) → c2(F(s(0), f(x0, f(s(s(x1)), nil))), F(x0, f(s(s(x1)), nil)))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(0) = [3]   
POL(F(x1, x2)) = 0   
POL(L'(x1)) = [1]   
POL(c(x1, x2, x3)) = x1 + x2 + x3   
POL(c1(x1)) = x1   
POL(c2(x1)) = x1   
POL(c2(x1, x2)) = x1 + x2   
POL(c2(x1, x2, x3)) = x1 + x2 + x3   
POL(c2(x1, x2, x3, x4)) = x1 + x2 + x3 + x4   
POL(f(x1, x2)) = [3] + x1   
POL(nil) = [2]   
POL(s(x1)) = 0   

(16) Obligation:

Complexity Dependency Tuples Problem
Rules:

f(z0, f(s(s(z1)), f(z2, z3))) → f(s(z0), f(z1, f(s(z2), z3)))
f(z0, f(s(s(z1)), nil)) → f(s(z0), f(z1, f(s(0), nil)))
L(f(s(s(z0)), f(z1, z2))) → L(f(s(0), f(z0, f(s(z1), z2))))
Tuples:

F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
L'(f(s(s(s(z1))), f(s(z2), nil))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(0), nil))))), F(s(0), f(s(z1), f(s(s(z2)), nil))), F(s(z1), f(s(s(z2)), nil)), F(s(s(z2)), nil))
L'(f(s(s(x0)), f(s(x1), nil))) → c2(F(s(0), f(x0, f(s(s(x1)), nil))), F(x0, f(s(s(x1)), nil)))
S tuples:

F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(s(z1))), f(s(z2), nil))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(0), nil))))), F(s(0), f(s(z1), f(s(s(z2)), nil))), F(s(z1), f(s(s(z2)), nil)), F(s(s(z2)), nil))
K tuples:

L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
L'(f(s(s(x0)), f(s(x1), nil))) → c2(F(s(0), f(x0, f(s(s(x1)), nil))), F(x0, f(s(s(x1)), nil)))
Defined Rule Symbols:

f, L

Defined Pair Symbols:

F, L'

Compound Symbols:

c, c1, c2, c2, c2, c2

(17) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil)))) by

F(z0, f(s(s(s(s(y1)))), nil)) → c1(F(s(z0), f(s(s(y1)), f(s(0), nil))))

(18) Obligation:

Complexity Dependency Tuples Problem
Rules:

f(z0, f(s(s(z1)), f(z2, z3))) → f(s(z0), f(z1, f(s(z2), z3)))
f(z0, f(s(s(z1)), nil)) → f(s(z0), f(z1, f(s(0), nil)))
L(f(s(s(z0)), f(z1, z2))) → L(f(s(0), f(z0, f(s(z1), z2))))
Tuples:

F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
L'(f(s(s(s(z1))), f(s(z2), nil))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(0), nil))))), F(s(0), f(s(z1), f(s(s(z2)), nil))), F(s(z1), f(s(s(z2)), nil)), F(s(s(z2)), nil))
L'(f(s(s(x0)), f(s(x1), nil))) → c2(F(s(0), f(x0, f(s(s(x1)), nil))), F(x0, f(s(s(x1)), nil)))
F(z0, f(s(s(s(s(y1)))), nil)) → c1(F(s(z0), f(s(s(y1)), f(s(0), nil))))
S tuples:

F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(s(z1))), f(s(z2), nil))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(0), nil))))), F(s(0), f(s(z1), f(s(s(z2)), nil))), F(s(z1), f(s(s(z2)), nil)), F(s(s(z2)), nil))
F(z0, f(s(s(s(s(y1)))), nil)) → c1(F(s(z0), f(s(s(y1)), f(s(0), nil))))
K tuples:

L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
L'(f(s(s(x0)), f(s(x1), nil))) → c2(F(s(0), f(x0, f(s(s(x1)), nil))), F(x0, f(s(s(x1)), nil)))
Defined Rule Symbols:

f, L

Defined Pair Symbols:

F, L'

Compound Symbols:

c, c2, c2, c2, c2, c1

(19) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)

Use forward instantiation to replace L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2)) by

L'(f(s(s(z0)), f(z1, f(s(s(y1)), f(y2, y3))))) → c2(F(s(z1), f(s(s(y1)), f(y2, y3))))
L'(f(s(s(z0)), f(z1, f(s(s(s(s(y1)))), nil)))) → c2(F(s(z1), f(s(s(s(s(y1)))), nil)))

(20) Obligation:

Complexity Dependency Tuples Problem
Rules:

f(z0, f(s(s(z1)), f(z2, z3))) → f(s(z0), f(z1, f(s(z2), z3)))
f(z0, f(s(s(z1)), nil)) → f(s(z0), f(z1, f(s(0), nil)))
L(f(s(s(z0)), f(z1, z2))) → L(f(s(0), f(z0, f(s(z1), z2))))
Tuples:

F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
L'(f(s(s(s(z1))), f(s(z2), nil))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(0), nil))))), F(s(0), f(s(z1), f(s(s(z2)), nil))), F(s(z1), f(s(s(z2)), nil)), F(s(s(z2)), nil))
L'(f(s(s(x0)), f(s(x1), nil))) → c2(F(s(0), f(x0, f(s(s(x1)), nil))), F(x0, f(s(s(x1)), nil)))
F(z0, f(s(s(s(s(y1)))), nil)) → c1(F(s(z0), f(s(s(y1)), f(s(0), nil))))
L'(f(s(s(z0)), f(z1, f(s(s(y1)), f(y2, y3))))) → c2(F(s(z1), f(s(s(y1)), f(y2, y3))))
L'(f(s(s(z0)), f(z1, f(s(s(s(s(y1)))), nil)))) → c2(F(s(z1), f(s(s(s(s(y1)))), nil)))
S tuples:

F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(s(z1))), f(s(z2), nil))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(0), nil))))), F(s(0), f(s(z1), f(s(s(z2)), nil))), F(s(z1), f(s(s(z2)), nil)), F(s(s(z2)), nil))
F(z0, f(s(s(s(s(y1)))), nil)) → c1(F(s(z0), f(s(s(y1)), f(s(0), nil))))
K tuples:

L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
L'(f(s(s(x0)), f(s(x1), nil))) → c2(F(s(0), f(x0, f(s(s(x1)), nil))), F(x0, f(s(s(x1)), nil)))
L'(f(s(s(z0)), f(z1, f(s(s(y1)), f(y2, y3))))) → c2(F(s(z1), f(s(s(y1)), f(y2, y3))))
L'(f(s(s(z0)), f(z1, f(s(s(s(s(y1)))), nil)))) → c2(F(s(z1), f(s(s(s(s(y1)))), nil)))
Defined Rule Symbols:

f, L

Defined Pair Symbols:

F, L'

Compound Symbols:

c, c2, c2, c2, c1, c2

(21) CdtLeafRemovalProof (ComplexityIfPolyImplication transformation)

Removed 2 leading nodes:

L'(f(s(s(z0)), f(z1, f(s(s(s(s(y1)))), nil)))) → c2(F(s(z1), f(s(s(s(s(y1)))), nil)))
L'(f(s(s(z0)), f(z1, f(s(s(y1)), f(y2, y3))))) → c2(F(s(z1), f(s(s(y1)), f(y2, y3))))

(22) Obligation:

Complexity Dependency Tuples Problem
Rules:

f(z0, f(s(s(z1)), f(z2, z3))) → f(s(z0), f(z1, f(s(z2), z3)))
f(z0, f(s(s(z1)), nil)) → f(s(z0), f(z1, f(s(0), nil)))
L(f(s(s(z0)), f(z1, z2))) → L(f(s(0), f(z0, f(s(z1), z2))))
Tuples:

F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
L'(f(s(s(s(z1))), f(s(z2), nil))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(0), nil))))), F(s(0), f(s(z1), f(s(s(z2)), nil))), F(s(z1), f(s(s(z2)), nil)), F(s(s(z2)), nil))
L'(f(s(s(x0)), f(s(x1), nil))) → c2(F(s(0), f(x0, f(s(s(x1)), nil))), F(x0, f(s(s(x1)), nil)))
F(z0, f(s(s(s(s(y1)))), nil)) → c1(F(s(z0), f(s(s(y1)), f(s(0), nil))))
S tuples:

F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(s(z1))), f(s(z2), nil))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(0), nil))))), F(s(0), f(s(z1), f(s(s(z2)), nil))), F(s(z1), f(s(s(z2)), nil)), F(s(s(z2)), nil))
F(z0, f(s(s(s(s(y1)))), nil)) → c1(F(s(z0), f(s(s(y1)), f(s(0), nil))))
K tuples:

L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
L'(f(s(s(x0)), f(s(x1), nil))) → c2(F(s(0), f(x0, f(s(s(x1)), nil))), F(x0, f(s(s(x1)), nil)))
Defined Rule Symbols:

f, L

Defined Pair Symbols:

F, L'

Compound Symbols:

c, c2, c2, c2, c1

(23) CpxTrsMatchBoundsTAProof (EQUIVALENT transformation)

A linear upper bound on the runtime complexity of the TRS R could be shown with a Match-Bound[TAB_LEFTLINEAR,TAB_NONLEFTLINEAR] (for contructor-based start-terms) of 0.

The compatible tree automaton used to show the Match-Boundedness (for constructor-based start-terms) is represented by:
final states : [1, 2]
transitions:
s0(0) → 0
00() → 0
nil0() → 0
f0(0, 0) → 1
L0(0) → 2

(24) BOUNDS(O(1), O(n^1))